package pe.com.bbva.util;

import java.text.Format;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Locale;

public class Util {

	public static String isStringNull(Object o) {
		if (o == null) {
			return null;
		} else if (o.toString().trim().equals("")) {
			return null;
		} else {
			return o.toString();
		}
	}

	public static String isString(Object o) {
		if (o == null) {
			return "";
		} else
			return o.toString();
	}

	public static String addZerosToLeft(String numero, Integer valorMax) {
		String numFormat = "";
		if (numero.length() < valorMax.intValue()) {
			// Rellenamos con ceros a la izquierda
			for (int i = numero.length(); i < valorMax.intValue(); i++) {
				numFormat += "0";
			}
		}
		numFormat += numero;
		return numFormat;
	}
	
	public static String addValueToLeft(String numero, Integer valorMax, String valor) {
		String numFormat = "";
		if (numero.length() < valorMax.intValue()) {
			for (int i = numero.length(); i < valorMax.intValue(); i++) {
				numFormat += valor;
			}
		}
		numFormat += numero;
		return numFormat;
	}

	public static String removeCero(String obj) {
		int val = Integer.parseInt(obj);
		return String.valueOf(val);
	}

	public static List<String> separador(String valor, char separador) {
		String str = "";
		List<String> listaValor = new ArrayList<String>();
		for (int i = 0; i < valor.length(); i++) {
			if (valor.charAt(i) != separador) {
				str = str + valor.charAt(i);
			} else {
				listaValor.add(str);
				str = "";
			}
		}
		return listaValor;
	}

	public static String getFormatoFecha(Date date) {
		try {
			SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
			return sdf.format(date);
		} catch (Exception e) {
			return "00/00/0000";
		}
	}

	public static String getFormatoHora(Date date) {
		try {
			SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
			return sdf.format(date);
		} catch (Exception e) {
			return "00:00";
		}
	}
	
	public static String getFormatoCompleto(Date date) {
		try {
			SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
			return sdf.format(date);
		} catch (Exception e) {
			return "00:00";
		}
	}

	public static boolean prefijoArchivoCorrecto(String prefijoArchivo,
			String archivoFileName) {
		if (prefijoArchivo != null && archivoFileName != null
				&& archivoFileName.indexOf(prefijoArchivo) == 0)
			return true;
		return false;
	}

	public static boolean extensionArchivoExcel(String archivoFileName) {
		String extension = archivoFileName.substring(
				archivoFileName.indexOf(".") + 1, archivoFileName.length());
		if (extension != null && extension.toLowerCase().equals("xlsx")
				|| extension.toLowerCase().equals("xls")) {
			return true;
		}
		return false;
	}

	public static boolean isFecha(Object valor) {
		boolean ok = false;
		if (valor != null && !valor.toString().trim().isEmpty()) {
			SimpleDateFormat formatoDelTexto = new SimpleDateFormat(
					"dd/MM/yyyy");
			String strFecha = valor.toString();
			try {
				formatoDelTexto.setLenient(false);
				@SuppressWarnings("unused")
				Date fech = formatoDelTexto.parse(strFecha);
				ok = true;
			} catch (ParseException e) {

			}
		}
		return ok;
	}

	public static boolean isNumero(Object valor) {
		try {
			Double doubleVal = Double.parseDouble((valor).toString());
			doubleVal.longValue();
		} catch (Exception e) {
			return false;
		}
		return true;
	}

	public static Locale getLocaleES() {
		return new Locale("es", "PE");
	}

	public static Locale getLocaleUS() {
		return new Locale("us", "US");
	}

	public static String getAnioActual() {
		Format anioFormateado = new SimpleDateFormat("yyyy");
		return anioFormateado.format(new Date());
	}

	public static String getFileFormat(String idTurno, String abreviacion, String courier, String fecha, String tipoArchivo) {
		String nomArchivo = "";
		if(tipoArchivo.equals("ARCHIVO DE ESTAMPACION")){
			nomArchivo=idTurno+"-"+abreviacion+"-"+fecha+Constantes.EXTENSION_FILE;
		}else if(tipoArchivo.equals("ARCHIVO DE RETORNO")){
			nomArchivo=idTurno+"-"+abreviacion+"-GPS-"+fecha+Constantes.EXTENSION_FILE;
		}else if(tipoArchivo.equals("ARCHIVO DE FALTANTES")){
			nomArchivo=idTurno+"-"+courier+"-"+fecha+Constantes.EXTENSION_FILE;
		}
		return nomArchivo;
	}
	
	public static String getArchivoGPSCompleto(Date date) {
		try {
			SimpleDateFormat sdf = new SimpleDateFormat("ddMMyyyyHHmmss");
			return sdf.format(date);
		} catch (Exception e) {
			return "00000000000000";
		}
	}
	
	public static String getArchivoGPSFecha(Date date) {
		try {
			SimpleDateFormat sdf = new SimpleDateFormat("ddMMyyyy");
			return sdf.format(date);
		} catch (Exception e) {
			return "00000000";
		}
	}
}